package com.zenithmind.disk.service;

import com.zenithmind.disk.pojo.domain.Files;
import com.zenithmind.disk.pojo.query.FileQuery;
import com.zenithmind.disk.pojo.vo.FileVO;
import com.zenithmind.common.result.PageResult;

import java.util.List;

/**
 * 文件管理服务接口
 * 遵循单一职责原则：专注于文件管理功能
 * 遵循接口隔离原则：将管理功能从主要文件服务中分离
 */
public interface FileManagementService {

    /**
     * 删除文件或文件夹
     * @param fileId 文件ID
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean deleteFile(String fileId, String userId);

    /**
     * 获取文件信息
     * @param fileId 文件ID
     * @return 文件信息
     */
    FileVO getFileInfo(String fileId);

    /**
     * 分页查询文件列表
     * @param fileQuery 文件查询条件
     * @return 分页查询结果
     */
    PageResult<FileVO> filePage(FileQuery fileQuery);

    /**
     * 批量删除文件-管理员
     * @param ids 文件ID列表
     * @return 是否成功
     */
    boolean deleteBatchFiles(List<String> ids);

    /**
     * 管理员添加或修改文件
     * @param file 文件信息
     * @return 文件信息
     */
    FileVO addOrUpdateFileByAdmin(Files file);
}
